Contributors: Jellejurre, JustSleightly
Expressions Menu and Parameters
VRC Expression Parameters
A VRC Expression Parameter List is an Asset containing a list of parameters, consisting of a name, a type, a default value, whether or not it’s saved, and whether or not it’s synced. It can be created by (under Assets in the Project window) Right Click
→ Create
→ VRChat
→ Avatars
→ Expression Parameters
.
How to create a VRC EXpression Parameter List
This list is used by VRChat to animate parameters in your Playable Layers, and its values can be edited by in multiple ways:
- The VRC Expression Menu (circle menu)
- A VRC Contact Receiver’s parameter
- A VRC Parameter Driver
Every parameter on the VRC Expression Parameter list gets its value sent to every Playable Layer in the VRC Avatar Descriptor.
For example:
If you have a VRC Expression Parameter called “Hat Toggle” and a parameter in your FX Controller called “Hat Toggle” (exact same spelling), then whenever the Expression Parameter gets enabled, so does the FX Controller parameter.
The Expression Parameter and the Controller Parameter don’t have to be of the same type. More information on this can be found on the Expression Parameter Mismatching page.
To Add a parameter, you can press the Add
button at the top of the VRC Expression Parameter List inspector. To move a parameter up or down, you can click on the parameter to select it and make it light gray, and then press the Up
or Down
buttons. To delete a parameter, you can select it and press the Delete
button.
The Clear Parameters
button clears the parameters, and the Default Parameters
button resets it to the defaults.
The Default VRC Expression Parameters. These are only needed if you’re using the default Action controller (for VRCEmote) or the default FX controller (for the other two).
Settings
A VRC Expression Parameter has a few settings:
- Name: This name determines which parameters get set in the Playable Layers. Only parameters with the exact same name in the Playable Layer Controllers get set. This also is the name that should be entered in the VRC Contact Receiver or VRC Phys Bone
Parameter
fields. - Type:
Int
: whole numbers, can technically be any whole number, but only numbers 0 to 255 are synced.Float
: any number, can technically be any number, but only multiples of 1/127 between -1 and 1 are synced (so -1, -126/127, … 126/127, 1).Bool
: True or False
- Default:
- The default value which gets used whenever you reset your avatar (or when you restart/rejoin a world with
Saved
disabled).
- The default value which gets used whenever you reset your avatar (or when you restart/rejoin a world with
- Saved:
- Whether or not this value gets saved between world/sessions, or reset to the default value.
- Synced:
- Whether or not this value gets synced to remote players. This should generally be true, unless you’re relying on remote Contact, Phys Bone, or Parameter Driver behaviour to set the values for you.
- Only synced values are counted towards bits being used, but note that unsynced values aren’t synced to other players. Syncing a
Float
or anInt
takes 8 bits, while syncing aBool
takes 1. - You can only sync up to 256 bits (128 bits on older SDKs). Older SDKs also didn’t have this Synced value.
An example VRC Expression Parameter List
VRC Expression Menu
A VRC Expression Menu is an Asset containing the layout for one Menu (Circle) of your Circle Hand Menu. A Menu can contain up to eight “Controls”, and has a selected Active Avatar. This avatar is used to get and check the VRC Expression Parameters from.
There are six types of Controls:
How to create a VRC Expression Menu
-
Button: Turns the parameter in the
Parameter
field to True (Bool) or the value in theValue
field (Float or Int) for as long as the user presses the button, and back to False (Bool) or 0 (Float or Int) when the user lets go of the button. If you give it a short press, it stays enabled for at least 0.2 seconds.You would use this if you have a value which you wanna enable only for a quick moment, which realistically doesn’t happen often.
A Default VRC Expression Menu. It has 0 Controls and has my current avatar selected.
-
Toggle: Turns the parameter in the
Parameter
field to True (Bool) or the value in theValue
field (Float or Int) when enabled, and to False (Bool) or 0 when disabled. Pressing the button switched between enabled and disabled.This is the most often used Control, as they are used for on/off toggles.
-
Sub Menu: Leaves the current Menu (Circle) and goes to the Menu (Circle) in the
Sub Menu
field. If a parameter is entered in theParameter
field, it behaves like a Toggle, but stays enabled while the user is in the Sub Menu, and disabled when they’re outside of it. In the Sub Menu, the user can press theBack
button to go back to this menu.This is used for organization, and when you want more than 8 Controls. If you wanna use 9 Controls in total, you could put 7 in your top level Menu (Circle), and then make a Sub Menu Control which points at another Menu (Circle) with the last 2 Controls.
- Two Axis Puppet: This is one of the more niche controls, it sets two Float parameters based on four buttons. If the stick is pushed all the way up, the
Parameter Vertical
parameter is set to 1, if the stick is pushed all the way down, theParameter Vertical
is set to -1. If it is pushed halfway up, it is set to 0.5, etc. The same happens for Left-Right and theParameter Horizonal
field. You can set labels and icons for every direction in the respective fields. TheParameter
and (when using a Float/Int)Value
field act like a Toggle based on the puppet being open. This Control is rarely used. It can be useful for stuff like controlling a moving tail, or a flying drone, but this is not something you’ll see happen often.
- Four Axis Puppet: This is also one of the more niche controls. It acts like a Two Axis puppet, but instead of having two parameters which are set to between -1 and 1, there are four parameter which are set to between 0 and 1.
The
Parameter
and (when using a Float/Int)Value
field act like a Toggle based on the puppet being open. This Control is also rarely used, with similar uses to the Two Axis Puppet.
A Two/Four Axis Puppet
- Radial Puppet: This is one of the most popular Controls. It has a
Parameter Rotation
field which sets a parameter based on the rotation of the puppet. This will be a value between 0 and 1 for Floats, and is saved when you close the Control with the trigger. TheParameter
and (when using a Float/Int)Value
field act like a Toggle based on the puppet being open. This Control is the second most popular Control, as it is used for slider settings (like hue or emission sliders) and simple setups for mutually exclusive toggles like a set of tops or pants.
A Radial Puppet